// 这里创建redux中的slice对象

import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'

// 这个asyncCount既是一个可以监听异步执行的对象.同时也是一个异步的actionCreator
export const asyncCount = createAsyncThunk('async', () => {
  //注意: 这个回调中要求必须返回一个promise实例
  return new Promise<number>((resolve, reject) => {
    // 这里执行异步操作
    setTimeout(() => {
      resolve(4)
      //   reject()
    }, 2000)
  })
})
const countSlice = createSlice({
  name: 'c', //当前slice的名称. 决定了reducer中case的名称. 决定了名称的前半部分
  initialState: { count: 9 }, // 初始数据
  reducers: {
    add(state, action) {
      state.count += action.payload
    },
  },
  extraReducers(builder) {
    builder.addCase(asyncCount.fulfilled, (state, action) => {
      // 当异步成功的时候,调用
      console.log('异步成功了')
      console.log(action)
      state.count = state.count + action.payload
    })
  },
})

export default countSlice
